import './render'; // 初始化Canvas
import JunqiGame from './junqi/game'; // 导入军棋游戏类

const ctx = canvas.getContext('2d'); // 获取canvas的2D绘图上下文

/**
 * 军棋游戏主函数
 */
export default class Main {
  aniId = 0; // 用于存储动画帧的ID
  junqiGame = null; // 军棋游戏实例

  constructor() {
    // 创建军棋游戏实例
    this.junqiGame = new JunqiGame();

    // 开始游戏循环
    this.start();
  }

  /**
   * 开始游戏
   */
  start() {
    cancelAnimationFrame(this.aniId); // 清除上一局的动画
    this.aniId = requestAnimationFrame(this.loop.bind(this)); // 开始新的动画循环
  }

  /**
   * canvas重绘函数
   * 每一帧重新绘制军棋游戏
   */
  render() {
    // 清空画布
    ctx.clearRect(0, 0, canvas.width, canvas.height);

    // 渲染军棋游戏
    this.junqiGame.render();
  }

  /**
   * 游戏逻辑更新主函数
   */
  update() {
    // 军棋游戏逻辑更新
    // （目前军棋游戏是事件驱动的，暂时不需要每帧更新）
  }

  /**
   * 实现游戏帧循环
   */
  loop() {
    this.update(); // 更新游戏逻辑
    this.render(); // 渲染游戏画面

    // 请求下一帧动画
    this.aniId = requestAnimationFrame(this.loop.bind(this));
  }
}
